1894B - Two Out of Three - CodeForces Solution


constructive algorithms

Please click on ads to support us..

Python Code:

for _ in range(int(input())):
	n=int(input())
	a=list(map(int,input().split()))
	t=[0]*(max(a)+1)
	for i in range(n):
		t[a[i]]+=1
	c=0
	for i in t:
		if i >= 2: c+=1
	if c<2: print(-1); continue
	else:
		cnt=0; b=[]
		a=[(a[i], i) for i in range(n)]
		a.sort()
		i=0
		while i < n:
			if t[a[i][0]]>=2:
				if cnt==0:
					b+=[1]+[2]*(t[a[i][0]]-1);
				else:
					b+=[1]+(t[a[i][0]]-1)*[3];
				cnt+=1
			else: b+=[1]
			i=len(b)
		c=[0]*n
		for i in range(n):
			c[a[i][1]] = b[i]
		print(*c); continue
	print(-1)

C++ Code:

#include <bits/stdc++.h>
#define int long long
using namespace std;


int32_t main() {
  int T;
  cin>>T;
  while(T--) {
  int n;
  cin>>n;
  map<int,vector<int>>mp;
  vector<int>arr(n);
  for (int i=0;i<n;i++) cin>>arr[i];
  for (int i=0;i<n;i++) {
    mp[arr[i]].push_back(i);
  }
  int check=0;
  for (auto x:mp) {
    if (x.second.size()>=2) check++;
  }
  if (check<=1) cout<<-1<<endl;
  else {
    vector<int>out(n);
    int c=0;
    for (auto x:mp) {
      if (c%2==0) {
        for (int i=0;i<x.second.size();i++) {
             if (i%2==0) {
             out[x.second[i]]=1;
             }
             else out[x.second[i]]=2;
        }
      }
      else {
        for (int i=0;i<x.second.size();i++) {
             if (i%2==0) {
             out[x.second[i]]=1;
             }
             else out[x.second[i]]=3;
        }
      }
      if (x.second.size()>1) c++;
    }
    for (auto y:out) cout<<y<<" ";
    cout<<endl;
  }
  }
}
  
    


Comments

Submit
0 Comments
More Questions

780C - Andryusha and Colored Balloons
1153A - Serval and Bus
1487C - Minimum Ties
1136A - Nastya Is Reading a Book
1353B - Two Arrays And Swaps
1490E - Accidental Victory
1335A - Candies and Two Sisters
96B - Lucky Numbers (easy)
1151B - Dima and a Bad XOR
1435B - A New Technique
1633A - Div 7
268A - Games
1062B - Math
1294C - Product of Three Numbers
749A - Bachgold Problem
1486B - Eastern Exhibition
1363A - Odd Selection
131B - Opposites Attract
490C - Hacking Cypher
158B - Taxi
41C - Email address
1373D - Maximum Sum on Even Positions
1574C - Slay the Dragon
621A - Wet Shark and Odd and Even
1395A - Boboniu Likes to Color Balls
1637C - Andrew and Stones
1334B - Middle Class
260C - Balls and Boxes
1554A - Cherry
11B - Jumping Jack